<!DOCTYPE HTML>
<script src="../../../../resources/js-test.js"></script>
<style>
html, body {
  margin: 0;
  width: 2000px;
  height: 2000px;
}
</style>
<div id=console></div>
<script>
var event;
var scrollOffset = {
    x: 12,
    y: 42
};
var point = {
    x: 50,
    y: 50
};

var eventReceived = {};

function onEvent(e) {
    debug("Received " + e.type + " in page");
    event = e;
    eventReceived[e.type] = true;
    shouldBe("event.screenX", "point.x");
    shouldBe("event.screenY", "point.y");
    shouldBe("event.clientX", "point.x");
    shouldBe("event.clientY", "point.y");
    shouldBe("event.pageX", "point.x + scrollOffset.x");
    shouldBe("event.pageY", "point.y + scrollOffset.y");
}

var eventTypes = ['mousemove', 'mousedown', 'mouseup', 'click'];
for (var i = 0; i < eventTypes.length; i++)
    document.addEventListener(eventTypes[i],onEvent);

description("Verifies that a tap occurring in a scrolled page has the correct co-ordinates");

if (window.eventSender) {
    jsTestIsAsync = true;
    window.onload = function() {
        window.scrollTo(scrollOffset.x, scrollOffset.y);

        debug("Sending GestureTapDown to " + point.x + "," + point.y);
        eventSender.gestureTapDown(point.x, point.y);

        debug("Sending GestureShowPress");
        eventSender.gestureShowPress(point.x, point.y);

        debug("Sending GestureTap");
        eventSender.gestureTap(point.x, point.y);

        shouldBeTrue("eventReceived.mousemove");
        shouldBeTrue("eventReceived.mousedown");
        shouldBeTrue("eventReceived.mouseup");
        shouldBeTrue("eventReceived.click");
        setTimeout(finishJSTest, 100);
    }
} else {
    debug("This test requires eventSender");
}
</script>
